package com.ruipengkj.model;

import java.util.List;
import java.util.Vector;

import javax.swing.table.AbstractTableModel;

import com.ruipengkj.ApplicationContext;
import com.ruipengkj.bean.TEmployee;
import com.ruipengkj.bean.TMoneyInOut;
import com.ruipengkj.commons.BuildSpringApplication;
import com.ruipengkj.service.TEmployeeService;

public class MoneyInOntModel extends AbstractTableModel {

	private static final long serialVersionUID = 1L;
	private Vector<List<Object>> rowdatas=new Vector<List<Object>>();
	private Vector<String> columns = new Vector<String>();
	private TEmployeeService tEmployeeService;
	public MoneyInOntModel(){
		columns.add("资金出入编号");
		columns.add("出入类型");
		columns.add("出款人/收款人");
		columns.add("出入原因类型");
		columns.add("原因单据编号");
		columns.add("是否已完成");
		columns.add("经手人");
		columns.add("操作时间");
		tEmployeeService=BuildSpringApplication.getInstance().getTEmployeeServiceImpl();
	}
	
	
	//获得行数
	public int getRowCount(){
		return rowdatas.size();
	}
	//获得列数
	public int getColumnCount(){
		return columns.size();
	}
	//获得单元格的值
	public Object getValueAt(int row,int column){
		
		return ((Vector)rowdatas.get(row)).get(column);
	}
	//获取列名
	public String getColumnName(int column){
		return (String)columns.get(column);
	}
	//设置单元格是否可编辑
	public boolean isCellEditable(int rowIndex,int columnIndex){
		return false;
	}
	
	public void removeData(int row){
		rowdatas.remove(row);
	}
	
	//设置单元格的值
	public void setValueAt(Object aValue,int rowIndex,int columnIndex){
		//取出对应的记录
		Vector rowdata = (Vector)rowdatas.get(rowIndex);
		//删除原来的值
		rowdata.remove(columnIndex);
		//添加用户新修改的值
		rowdata.add(columnIndex,aValue);
	}


	public void setRowData(List<TMoneyInOut> tMoneyInOntList) throws Exception{
		rowdatas.clear();
		if(tMoneyInOntList!=null&&tMoneyInOntList.size()!=0){
			for(int i=0;i<tMoneyInOntList.size();i++){
				TMoneyInOut moneyInOut=tMoneyInOntList.get(i);
				List<Object> row=new Vector<Object>();
				row.add(moneyInOut.getInOutID());//资金出入编号
				row.add(ApplicationContext.MONEYINOUT_TYPE_MAP().get(moneyInOut.getType()));//出入类型
				TEmployee person=null;
				if(moneyInOut.getPersonID()!=null){
					person=tEmployeeService.getNameByIdService(moneyInOut.getPersonID());
				}
				if(person!=null&&person.getName()!=null){
					row.add(" "+person.getName()+" ");//出款人/收款人（编号）
				}else{
					row.add("    ");//出款人/收款人（编号）
				}
				
				
				row.add(ApplicationContext.MONEYINOUT_SOURCE_TYPE_MAP().get(moneyInOut.getSourceType()));//出入原因类型
				row.add(moneyInOut.getSource());//原因单据编号
				if(moneyInOut.isIsDone()){
					row.add("已完成");//是否已完成
				}else{
					row.add("未完成");//是否已完成
				}
				TEmployee operator=null;
				if(moneyInOut.getOperator()!=null){
					operator=tEmployeeService.getNameByIdService(moneyInOut.getOperator());
				}
				if(operator!=null&&operator.getName()!=null){
					row.add(operator.getName());//经手人
				}else{
					row.add("    ");//经手人
				}
				row.add(moneyInOut.getHappenTime());//操作时间
				
				rowdatas.add(row);
			}
		}
	}


	public void clear() {
		// TODO Auto-generated method stub
		rowdatas.clear();
	}

}
